{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 时间序列\n",
    "\n",
    "时间序列数据是许多不同领域的结构化数据的重要形式，例如金融，经济学，生态学，神经科学和物理学。在许多时间点上观察或测量的任何东西都会形成一个时间序列。许多时间序列是固定频率的，也就是说，数据点根据某些规则以固定的间隔出现，例如每15秒，每5分钟或每月一次。时间序列也可以是不规则的，没有固定的时间单位或单位之间的偏移。如何标记和引用时间序列数据取决于应用程序，并且您可能具有以下之一：\n",
    "\n",
    "- 时间戳记，特定时间点\n",
    "- 固定时间段，例如2007年1月或2010年全年\n",
    "- 时间间隔，以开始和结束时间戳记表示。句点可以被视为间隔的特殊情况\n",
    "- 实验或经过的时间；每个时间戳是相对于特定开始时间的时间度量（例如，自放入烤箱以来每秒烘烤的曲奇的直径）\n",
    "\n",
    "在本章中，我主要关注前三类中的时间序列，尽管许多技术都可以应用于实验时间序列，其中索引可以是整数或浮点数，指示从实验开始经过的时间。最简单和使用最广泛的时间序列是通过时间戳索引的时间序列。\n",
    "\n",
    "> pandas还支持基于时间增量的索引，这可能是表示实验或经过时间的有用方式。 我们不会在本书中探讨timedelta索引，但是您可以在pandas文档中了解更多信息。\n",
    "\n",
    "熊猫提供了许多内置的时间序列工具和数据算法。您可以有效地处理非常大的时间序列，并轻松地对不规则和固定频率的时间序列进行切片和切块，聚合以及重新采样。其中一些工具对于金融和经济应用程序特别有用，但是您当然也可以使用它们来分析服务器日志数据。\n",
    "\n",
    "## 11.1 日期和时间数据类型和工具\n",
    "\n",
    "Python标准库包括日期和时间数据的数据类型，以及与日历相关的功能。日期时间，时间和日历模块是开始的主要位置。datetime.datetime类型，或简称为datetime，被广泛使用："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(2020, 7, 15, 22, 11, 47, 738938)"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from datetime import datetime\n",
    "\n",
    "now = datetime.now()\n",
    "\n",
    "now"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2020, 7, 15)"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "now.year, now.month, now.day"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "datetime将日期和时间都存储到微秒。timedelta表示两个日期时间对象之间的时间差："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.timedelta(days=926, seconds=56700)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "delta = datetime(2011, 1, 7) - datetime(2008, 6, 24, 8, 15)\n",
    "\n",
    "delta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "926"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "delta.days"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "56700"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "delta.seconds"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "您可以向日期时间对象添加（或减去）一个时间增量或多个时间增量，以产生一个新的移位对象："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "from datetime import timedelta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "start = datetime(2011, 1, 7)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(2011, 1, 19, 0, 0)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "start + timedelta(12)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(2010, 12, 14, 0, 0)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "start - 2 * timedelta(12)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "表11-1总结了datetime模块中的数据类型。尽管本章主要关注熊猫中的数据类型和更高级的时间序列操作，但您可能在Python的许多其他地方遇到了基于日期时间的类型。\n",
    "\n",
    "### 在字符串和日期时间之间转换\n",
    "\n",
    "您可以使用str或strftime方法格式化日期时间对象和pandas时间戳对象（稍后将介绍）为字符串，并传递格式说明："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "stamp = datetime(2011, 1, 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'2011-01-03 00:00:00'"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "str(stamp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'2011-01-03'"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp.strftime('%Y-%m-%d')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "有关格式代码的完整列表，请参见表11-2（从第2章中摘录）。\n",
    "\n",
    "您可以使用以下相同的格式代码使用datetime.strptime将字符串转换为日期："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "value = '2011-01-03'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(2011, 1, 3, 0, 0)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "datetime.strptime(value, '%Y-%m-%d')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "datestrs = ['7/6/2011', '8/6/2011']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[datetime.datetime(2011, 7, 6, 0, 0), datetime.datetime(2011, 8, 6, 0, 0)]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[datetime.strptime(x, '%m/%d/%Y') for x in datestrs]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "datetime.strptime是解析已知格式的日期的好方法。但是，每次都要编写格式规范可能会有些烦人，尤其是对于常见的日期格式。在这种情况下，您可以在第三方dateutil包中使用parser.parse方法（在安装熊猫时会自动安装该方法）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "from dateutil.parser import parse"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(2011, 1, 3, 0, 0)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "parse('2011-01-03')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "dateutil能够解析大多数人类难以理解的日期表示形式："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(1997, 1, 31, 22, 45)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "parse('Jan 31, 1997 10:45 PM')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在国际语言环境中，出现在月份之前的日期很常见，因此您可以通过dayfirst = True来表明这一点："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(2011, 12, 6, 0, 0)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "parse('6/12/2011', dayfirst=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "pandas通常面向使用日期数组，无论是用作轴索引还是用作DataFrame中的列。to_datetime方法解析许多不同类型的日期表示形式。可以快速解析ISO 8601之类的标准日期格式："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "datestrs = ['2011-07-06 12:00:00', '2011-08-06 00:00:00']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2011-07-06 12:00:00', '2011-08-06 00:00:00'], dtype='datetime64[ns]', freq=None)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "pd.to_datetime(datestrs)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "它还处理应视为缺失的值（无，空字符串等）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "idx = pd.to_datetime(datestrs + [None])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2011-07-06 12:00:00', '2011-08-06 00:00:00', 'NaT'], dtype='datetime64[ns]', freq=None)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "idx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "NaT"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "idx[2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False, False,  True])"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.isnull(idx)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "NaT（不是时间）是时间戳数据的熊猫的null值。\n",
    "\n",
    "> 警告：dateutil.parser是有用但不完善的工具。值得注意的是，它会将某些字符串识别为您可能不希望使用的日期，例如，“ 42”将被解析为具有今天日历日期的2042年。\n",
    "\n",
    "datetime对象还具有许多其他国家或地区的语言的特定于区域设置的格式选项。例如，与英语系统相比，德语或法语系统上的缩写月份名称将有所不同。有关列表，请参见表11-3。\n",
    "\n",
    "## 11.2 时间序列基础\n",
    "\n",
    "pandas中一种基本的时间序列对象是一个以时间戳为索引的序列，该序列通常在pandas外部以Python字符串或日期时间对象表示："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "dates = [datetime(2011, 1, 2), datetime(2011, 1, 5),\n",
    "         datetime(2011, 1, 7), datetime(2011, 1, 8),\n",
    "         datetime(2011, 1, 10), datetime(2011, 1, 12)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "ts = pd.Series(np.random.randn(6), index=dates)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2011-01-02   -0.660864\n",
       "2011-01-05   -0.892516\n",
       "2011-01-07   -0.261048\n",
       "2011-01-08    0.394434\n",
       "2011-01-10    0.140635\n",
       "2011-01-12    0.720481\n",
       "dtype: float64"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在后台，这些datetime对象已放入DatetimeIndex中："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2011-01-02', '2011-01-05', '2011-01-07', '2011-01-08',\n",
       "               '2011-01-10', '2011-01-12'],\n",
       "              dtype='datetime64[ns]', freq=None)"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.index"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "与其他系列一样，索引不同的时间序列之间的算术运算会自动与日期对齐："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2011-01-02   -1.321728\n",
       "2011-01-05         NaN\n",
       "2011-01-07   -0.522096\n",
       "2011-01-08         NaN\n",
       "2011-01-10    0.281271\n",
       "2011-01-12         NaN\n",
       "dtype: float64"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts + ts[::2]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "回想一下ts[:: 2]选择ts中的第二个元素。\n",
    "\n",
    "大熊猫使用NumPy的datetime64数据类型以十亿分之一秒的分辨率存储时间戳："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('<M8[ns]')"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.index.dtype"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "DatetimeIndex中的标量值是pandas Timestamp对象："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "stamp = ts.index[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2011-01-02 00:00:00')"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以在使用datetime对象的任何地方替换时间戳。此外，它可以存储频率信息（如果有）并了解如何进行时区转换和其他类型的操作。稍后将进一步讨论这两个方面。\n",
    "\n",
    "### 索引，选择，子集\n",
    "\n",
    "当您基于标签索引和选择数据时，时间序列的行为与任何其他pandas.Series一样。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "stamp = ts.index[2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.2610479931069228"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts[stamp]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "为方便起见，您还可以传递可解释为日期的字符串："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.14063546468165292"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts['1/10/2011']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.14063546468165292"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts['20110110']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对于更长的时间序列，可以传递一年或仅一年零一个月来轻松选择数据切片："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "longer_ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-01   -0.006326\n",
       "2000-01-02    0.552131\n",
       "2000-01-03    1.406631\n",
       "2000-01-04    1.028800\n",
       "2000-01-05   -1.031235\n",
       "                ...   \n",
       "2002-09-22    2.625855\n",
       "2002-09-23    0.285741\n",
       "2002-09-24   -1.965145\n",
       "2002-09-25   -1.784176\n",
       "2002-09-26   -1.250172\n",
       "Freq: D, Length: 1000, dtype: float64"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "longer_ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2001-01-01    0.476914\n",
       "2001-01-02   -0.753122\n",
       "2001-01-03    0.924799\n",
       "2001-01-04   -2.727020\n",
       "2001-01-05    0.802804\n",
       "                ...   \n",
       "2001-12-27    0.037122\n",
       "2001-12-28    0.335198\n",
       "2001-12-29    1.301071\n",
       "2001-12-30    0.085082\n",
       "2001-12-31   -1.231003\n",
       "Freq: D, Length: 365, dtype: float64"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "longer_ts['2001']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在这里，字符串“ 2001”被解释为年份，并选择该时间段。如果您指定月份，这也可以使用："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2001-05-01   -0.997129\n",
       "2001-05-02   -1.842631\n",
       "2001-05-03    0.423358\n",
       "2001-05-04    0.994099\n",
       "2001-05-05    0.601493\n",
       "2001-05-06    0.789656\n",
       "2001-05-07   -0.574008\n",
       "2001-05-08   -0.069458\n",
       "2001-05-09   -0.042415\n",
       "2001-05-10   -0.908153\n",
       "2001-05-11   -0.338875\n",
       "2001-05-12    2.214150\n",
       "2001-05-13    0.272227\n",
       "2001-05-14   -0.197819\n",
       "2001-05-15    0.619748\n",
       "2001-05-16    0.066555\n",
       "2001-05-17   -0.440852\n",
       "2001-05-18   -0.555304\n",
       "2001-05-19    1.694570\n",
       "2001-05-20   -0.912564\n",
       "2001-05-21   -0.707604\n",
       "2001-05-22    1.061711\n",
       "2001-05-23    1.157975\n",
       "2001-05-24   -0.898889\n",
       "2001-05-25    1.220020\n",
       "2001-05-26   -0.092083\n",
       "2001-05-27   -0.125201\n",
       "2001-05-28    0.981446\n",
       "2001-05-29    0.993833\n",
       "2001-05-30   -0.722777\n",
       "2001-05-31   -0.301047\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "longer_ts['2001-05']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "用datetime对象切片也可以："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.2610479931069228"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts[datetime(2011, 1, 7)]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于大多数时间序列数据都是按时间顺序排列的，因此可以使用时间序列中未包含的时间戳进行切片以执行范围查询："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2011-01-02   -0.660864\n",
       "2011-01-05   -0.892516\n",
       "2011-01-07   -0.261048\n",
       "2011-01-08    0.394434\n",
       "2011-01-10    0.140635\n",
       "2011-01-12    0.720481\n",
       "dtype: float64"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2011-01-07   -0.261048\n",
       "2011-01-08    0.394434\n",
       "2011-01-10    0.140635\n",
       "dtype: float64"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts['1/6/2011':'1/11/2011']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "和以前一样，您可以传递字符串日期，日期时间或时间戳。请记住，以这种方式进行切片会像切片NumPy数组一样在源时间序列上产生视图。这意味着不会复制任何数据，并且片上的修改将反映在原始数据中。\n",
    "\n",
    "有一个等效的实例方法truncate，它在两个日期之间切片一个Series："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2011-01-02   -0.660864\n",
       "2011-01-05   -0.892516\n",
       "2011-01-07   -0.261048\n",
       "2011-01-08    0.394434\n",
       "dtype: float64"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.truncate(after='1/9/2011')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "所有这些对于DataFrame同样适用，在其行上建立索引："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "dates = pd.date_range('1/1/2000', periods=100, freq='W-WED')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "long_df = pd.DataFrame(np.random.randn(100, 4),\n",
    "                       index=dates,\n",
    "                       columns=['Colorado', 'Texas', 'New York', 'Ohio'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2001-05-02</th>\n",
       "      <td>-0.315126</td>\n",
       "      <td>-1.785623</td>\n",
       "      <td>0.256569</td>\n",
       "      <td>0.061982</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001-05-09</th>\n",
       "      <td>1.038342</td>\n",
       "      <td>-0.887821</td>\n",
       "      <td>1.051129</td>\n",
       "      <td>-0.350965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001-05-16</th>\n",
       "      <td>0.877792</td>\n",
       "      <td>-0.180605</td>\n",
       "      <td>1.490712</td>\n",
       "      <td>-1.342175</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001-05-23</th>\n",
       "      <td>-0.230326</td>\n",
       "      <td>0.025445</td>\n",
       "      <td>1.239237</td>\n",
       "      <td>0.434418</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001-05-30</th>\n",
       "      <td>-0.249859</td>\n",
       "      <td>-1.176816</td>\n",
       "      <td>-0.777604</td>\n",
       "      <td>-1.397981</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            Colorado     Texas  New York      Ohio\n",
       "2001-05-02 -0.315126 -1.785623  0.256569  0.061982\n",
       "2001-05-09  1.038342 -0.887821  1.051129 -0.350965\n",
       "2001-05-16  0.877792 -0.180605  1.490712 -1.342175\n",
       "2001-05-23 -0.230326  0.025445  1.239237  0.434418\n",
       "2001-05-30 -0.249859 -1.176816 -0.777604 -1.397981"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "long_df.loc['5-2001']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 具有重复索引的时间序列\n",
    "\n",
    "在某些应用程序中，可能会有多个数据观测值落在特定的时间戳上。这是一个例子："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "dates = pd.DatetimeIndex(['1/1/2000', '1/2/2000', '1/2/2000',\n",
    "                          '1/2/2000', '1/3/2000'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "dup_ts = pd.Series(np.arange(5), index=dates)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-01    0\n",
       "2000-01-02    1\n",
       "2000-01-02    2\n",
       "2000-01-02    3\n",
       "2000-01-03    4\n",
       "dtype: int64"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dup_ts"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们可以通过检查其is_unique属性来判断索引不是唯一的："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dup_ts.index.is_unique"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现在，根据是否复制时间戳，索引到该时间序列将产生标量值或分片："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dup_ts['1/3/2000']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-02    1\n",
       "2000-01-02    2\n",
       "2000-01-02    3\n",
       "dtype: int64"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dup_ts['1/2/2000']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "假设您要聚合具有非唯一时间戳的数据。一种方法是使用groupby并通过level = 0："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "grouped = dup_ts.groupby(level=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-01    0\n",
       "2000-01-02    2\n",
       "2000-01-03    4\n",
       "dtype: int64"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grouped.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-01    1\n",
       "2000-01-02    3\n",
       "2000-01-03    1\n",
       "dtype: int64"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grouped.count()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 11.3 日期范围，频率和移位\n",
    "\n",
    "pandas的一般时间序列被认为是不规则的；也就是说，它们没有固定的频率。对于许多应用来说，这已经足够了。但是，通常最好相对于固定频率（例如每天，每月或每15分钟）进行工作，即使这意味着在时间序列中引入缺失值。幸运的是，pandas拥有一套完整的标准时间序列频率以及用于重新采样，推断频率并生成固定频率日期范围的工具。例如，您可以通过调用resample将采样时间序列转换为固定的每日频率："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2011-01-02   -0.660864\n",
       "2011-01-05   -0.892516\n",
       "2011-01-07   -0.261048\n",
       "2011-01-08    0.394434\n",
       "2011-01-10    0.140635\n",
       "2011-01-12    0.720481\n",
       "dtype: float64"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [],
   "source": [
    "resampler = ts.resample('D')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "字符串“ D”被解释为每日频率。\n",
    "\n",
    "频率之间的转换或重采样是一个足够大的主题，稍后可以在其自己的部分中找到（第348页的第11.6节“重采样和频率转换”）。在这里，我将向您展示如何使用基本频率及其倍数。\n",
    "\n",
    "### 生成日期范围\n",
    "\n",
    "虽然我以前没有解释就使用了它，但pandas.date_range负责根据特定频率生成具有指定长度的DatetimeIndex："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [],
   "source": [
    "index = pd.date_range('2012-04-01', '2012-06-01')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2012-04-01', '2012-04-02', '2012-04-03', '2012-04-04',\n",
       "               '2012-04-05', '2012-04-06', '2012-04-07', '2012-04-08',\n",
       "               '2012-04-09', '2012-04-10', '2012-04-11', '2012-04-12',\n",
       "               '2012-04-13', '2012-04-14', '2012-04-15', '2012-04-16',\n",
       "               '2012-04-17', '2012-04-18', '2012-04-19', '2012-04-20',\n",
       "               '2012-04-21', '2012-04-22', '2012-04-23', '2012-04-24',\n",
       "               '2012-04-25', '2012-04-26', '2012-04-27', '2012-04-28',\n",
       "               '2012-04-29', '2012-04-30', '2012-05-01', '2012-05-02',\n",
       "               '2012-05-03', '2012-05-04', '2012-05-05', '2012-05-06',\n",
       "               '2012-05-07', '2012-05-08', '2012-05-09', '2012-05-10',\n",
       "               '2012-05-11', '2012-05-12', '2012-05-13', '2012-05-14',\n",
       "               '2012-05-15', '2012-05-16', '2012-05-17', '2012-05-18',\n",
       "               '2012-05-19', '2012-05-20', '2012-05-21', '2012-05-22',\n",
       "               '2012-05-23', '2012-05-24', '2012-05-25', '2012-05-26',\n",
       "               '2012-05-27', '2012-05-28', '2012-05-29', '2012-05-30',\n",
       "               '2012-05-31', '2012-06-01'],\n",
       "              dtype='datetime64[ns]', freq='D')"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "index"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "默认情况下，date_range生成每日时间戳记。如果仅传递开始日期或结束日期，则必须传递多个期间才能生成："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2012-04-01', '2012-04-02', '2012-04-03', '2012-04-04',\n",
       "               '2012-04-05', '2012-04-06', '2012-04-07', '2012-04-08',\n",
       "               '2012-04-09', '2012-04-10', '2012-04-11', '2012-04-12',\n",
       "               '2012-04-13', '2012-04-14', '2012-04-15', '2012-04-16',\n",
       "               '2012-04-17', '2012-04-18', '2012-04-19', '2012-04-20'],\n",
       "              dtype='datetime64[ns]', freq='D')"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.date_range(start='2012-04-01', periods=20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2012-05-13', '2012-05-14', '2012-05-15', '2012-05-16',\n",
       "               '2012-05-17', '2012-05-18', '2012-05-19', '2012-05-20',\n",
       "               '2012-05-21', '2012-05-22', '2012-05-23', '2012-05-24',\n",
       "               '2012-05-25', '2012-05-26', '2012-05-27', '2012-05-28',\n",
       "               '2012-05-29', '2012-05-30', '2012-05-31', '2012-06-01'],\n",
       "              dtype='datetime64[ns]', freq='D')"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.date_range(end='2012-06-01', periods=20)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "开始日期和结束日期为生成的日期索引定义了严格的边界。例如，如果您想要一个包含每个月最后一个工作日的日期索引，则可以传递“ BM”频率（一个月的营业时间；在表11-4中查看频率的更完整列表），并且仅在或 日期间隔内将包括："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2000-01-31', '2000-02-29', '2000-03-31', '2000-04-28',\n",
       "               '2000-05-31', '2000-06-30', '2000-07-31', '2000-08-31',\n",
       "               '2000-09-29', '2000-10-31', '2000-11-30'],\n",
       "              dtype='datetime64[ns]', freq='BM')"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.date_range('2000-01-01', '2000-12-01', freq='BM')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "默认情况下，date_range保留开始或结束时间戳记的时间（如果有）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2012-05-02 12:56:31', '2012-05-03 12:56:31',\n",
       "               '2012-05-04 12:56:31', '2012-05-05 12:56:31',\n",
       "               '2012-05-06 12:56:31'],\n",
       "              dtype='datetime64[ns]', freq='D')"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.date_range('2012-05-02 12:56:31', periods=5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "有时，您将具有带有时间信息的开始或结束日期，但希望生成一组标准化为午夜的时间戳作为惯例。为此，有一个规范化选项："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2012-05-02', '2012-05-03', '2012-05-04', '2012-05-05',\n",
       "               '2012-05-06'],\n",
       "              dtype='datetime64[ns]', freq='D')"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.date_range('2012-05-02 12:56:31', periods=5, normalize=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 频率和日期偏移\n",
    "\n",
    "熊猫的频率由基本频率和乘数组成。基本频率通常由字符串别名表示，例如“ M”代表每月，“ H”代表每小时。对于每个基本频率，有一个对象通常被定义为日期偏移量。例如，小时频率可以用Hour类表示："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pandas.tseries.offsets import Hour, Minute"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "hour = Hour()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Hour>"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hour"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "您可以通过传递整数来定义偏移量的倍数："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [],
   "source": [
    "four_hours = Hour(4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<4 * Hours>"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "four_hours"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在大多数应用程序中，您将不需要显式创建这些对象之一，而只需使用字符串别名（例如“ H”或“ 4H”）即可。 在基频之前放置一个整数会创建一个倍数："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2000-01-01 00:00:00', '2000-01-01 04:00:00',\n",
       "               '2000-01-01 08:00:00', '2000-01-01 12:00:00',\n",
       "               '2000-01-01 16:00:00', '2000-01-01 20:00:00',\n",
       "               '2000-01-02 00:00:00', '2000-01-02 04:00:00',\n",
       "               '2000-01-02 08:00:00', '2000-01-02 12:00:00',\n",
       "               '2000-01-02 16:00:00', '2000-01-02 20:00:00',\n",
       "               '2000-01-03 00:00:00', '2000-01-03 04:00:00',\n",
       "               '2000-01-03 08:00:00', '2000-01-03 12:00:00',\n",
       "               '2000-01-03 16:00:00', '2000-01-03 20:00:00'],\n",
       "              dtype='datetime64[ns]', freq='4H')"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.date_range('2000-01-01', '2000-01-03 23:59', freq='4h')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "许多偏移量可以通过加在一起组合在一起："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<150 * Minutes>"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Hour(2) + Minute(30)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "同样，您可以传递频率字符串，例如“ 1h30min”，这些字符串将有效地解析为相同的表达式："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2000-01-01 00:00:00', '2000-01-01 01:30:00',\n",
       "               '2000-01-01 03:00:00', '2000-01-01 04:30:00',\n",
       "               '2000-01-01 06:00:00', '2000-01-01 07:30:00',\n",
       "               '2000-01-01 09:00:00', '2000-01-01 10:30:00',\n",
       "               '2000-01-01 12:00:00', '2000-01-01 13:30:00'],\n",
       "              dtype='datetime64[ns]', freq='90T')"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.date_range('2000-01-01', periods=10, freq='1h30min')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "某些频率描述的时间点间隔不均匀。例如，“ M”（日历的月末）和“ BM”（月的最后一个工作日/工作日）取决于一个月中的天数，在后者的情况下，则取决于该月是否在周末结束。我们称这些为锚定偏移量。\n",
    "\n",
    "返回表11-4，以获取熊猫中可用的频率代码和日期偏移量类别的列表。\n",
    "\n",
    "用户可以定义自己的自定义频率类别，以提供大熊猫无法使用的日期逻辑，尽管其详细信息不在本书的讨论范围之内。\n",
    "\n",
    "#### 一个月中的第几周\n",
    "\n",
    "从WOM开始，一种有用的频率类别是“每月的一周”。 这样一来，您便可以获取每个月的第三个星期五等日期："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [],
   "source": [
    "rng = pd.date_range('2012-01-01', '2012-09-01', freq='WOM-3FRI')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Timestamp('2012-01-20 00:00:00', freq='WOM-3FRI'),\n",
       " Timestamp('2012-02-17 00:00:00', freq='WOM-3FRI'),\n",
       " Timestamp('2012-03-16 00:00:00', freq='WOM-3FRI'),\n",
       " Timestamp('2012-04-20 00:00:00', freq='WOM-3FRI'),\n",
       " Timestamp('2012-05-18 00:00:00', freq='WOM-3FRI'),\n",
       " Timestamp('2012-06-15 00:00:00', freq='WOM-3FRI'),\n",
       " Timestamp('2012-07-20 00:00:00', freq='WOM-3FRI'),\n",
       " Timestamp('2012-08-17 00:00:00', freq='WOM-3FRI')]"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(rng)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 移位（超前和滞后）数据\n",
    "\n",
    "“移位”是指在时间上前后移动数据。Series和DataFrame都有一个shift方法，用于向前或向后进行幼稚的移位，而索引保持不变："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts = pd.Series(np.random.randn(4),\n",
    "               index=pd.date_range('1/1/2000', periods=4, freq='M'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31   -0.430259\n",
       "2000-02-29   -0.331127\n",
       "2000-03-31   -0.407736\n",
       "2000-04-30    0.506452\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31         NaN\n",
       "2000-02-29         NaN\n",
       "2000-03-31   -0.430259\n",
       "2000-04-30   -0.331127\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.shift(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31   -0.407736\n",
       "2000-02-29    0.506452\n",
       "2000-03-31         NaN\n",
       "2000-04-30         NaN\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.shift(-2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当我们这样移动时，缺少的数据会在时间序列的开始或结尾处引入。\n",
    "\n",
    "移位的常见用法是将一个时间序列或多个时间序列的变化百分比作为DataFrame列计算。 表示为："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31         NaN\n",
       "2000-02-29   -0.230400\n",
       "2000-03-31    0.231358\n",
       "2000-04-30   -2.242108\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts / ts.shift(1) - 1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于天真的变化会使索引保持不变，因此会丢弃某些数据。 因此，如果频率是已知的，则可以传递它以进行移位而不是简单地将数据提前到时间戳："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-03-31   -0.430259\n",
       "2000-04-30   -0.331127\n",
       "2000-05-31   -0.407736\n",
       "2000-06-30    0.506452\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.shift(2, freq='M')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "也可以传递其他频率，为您提供领先和滞后数据的灵活性："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-02-03   -0.430259\n",
       "2000-03-03   -0.331127\n",
       "2000-04-03   -0.407736\n",
       "2000-05-03    0.506452\n",
       "dtype: float64"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.shift(3, freq='D')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31 01:30:00   -0.430259\n",
       "2000-02-29 01:30:00   -0.331127\n",
       "2000-03-31 01:30:00   -0.407736\n",
       "2000-04-30 01:30:00    0.506452\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.shift(1, freq='90T')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 偏移日期\n",
    "\n",
    "大熊猫的日期偏移量也可以与datetime或Timestamp对象一起使用："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pandas.tseries.offsets import Day, MonthEnd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [],
   "source": [
    "now = datetime(2011, 11, 17)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2011-11-20 00:00:00')"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "now + 3 * Day()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果添加锚定的偏移量（如MonthEnd），则第一个增量将根据频率规则将日期“前滚”至下一个日期："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2011-11-30 00:00:00')"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "now + MonthEnd()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2011-12-31 00:00:00')"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "now + MonthEnd(2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "锚定的偏移量可以分别通过分别使用前滚和后滚方法显式地“向前”滚动日期或向后滚动："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [],
   "source": [
    "offset = MonthEnd()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2011-11-30 00:00:00')"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "offset.rollforward(now)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2011-10-31 00:00:00')"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "offset.rollback(now)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "创造性地使用日期偏移量是将这些方法与groupby一起使用："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts = pd.Series(np.random.randn(20), index=pd.date_range('1/15/2000', periods=20, freq='4d'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-15   -1.405584\n",
       "2000-01-19    0.687700\n",
       "2000-01-23   -0.518135\n",
       "2000-01-27   -0.466886\n",
       "2000-01-31   -0.314746\n",
       "2000-02-04   -0.859740\n",
       "2000-02-08    0.255674\n",
       "2000-02-12   -1.050324\n",
       "2000-02-16   -0.033687\n",
       "2000-02-20    1.978054\n",
       "2000-02-24   -0.632769\n",
       "2000-02-28   -1.482840\n",
       "2000-03-03   -0.671477\n",
       "2000-03-07    1.362919\n",
       "2000-03-11   -0.191519\n",
       "2000-03-15   -0.883145\n",
       "2000-03-19   -0.804877\n",
       "2000-03-23   -1.190349\n",
       "2000-03-27   -0.236337\n",
       "2000-03-31    0.087582\n",
       "Freq: 4D, dtype: float64"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31   -0.403530\n",
       "2000-02-29   -0.260804\n",
       "2000-03-31   -0.315900\n",
       "dtype: float64"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.groupby(offset.rollforward).mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当然，一种更简便，更快速的方法是使用重采样（我们将在第348页的第11.6节“重采样和频率转换”中对此进行更深入的讨论）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31   -0.403530\n",
       "2000-02-29   -0.260804\n",
       "2000-03-31   -0.315900\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.resample('M').mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 11.4 时区处理\n",
    "\n",
    "通常，使用时区被认为是时间序列操作中最不愉快的部分之一。结果，许多时间序列用户选择使用协调世界时或UTC的时间序列，这是格林威治标准时间的后继者，并且是当前的国际标准。时区表示为与UTC的偏移量；例如，在夏令时期间，纽约比世界协调时间晚四个小时，而在一年中的其他时间则落后五个小时。\n",
    "\n",
    "在Python中，时区信息来自第三方pytz库（可通过pip或conda安装），该库公开了世界时区信息的汇编Olson数据库。这对于历史数据尤为重要，因为夏令时（DST）转换日期（甚至UTC偏移）已根据地方政府的异想而过多次更改。在美国，自1900年以来，DST转换时间已多次更改！\n",
    "\n",
    "有关pytz库的详细信息，您需要查看该库的文档。就本书而言，pandas包装了pytz的功能，因此您可以在时区名称之外忽略其API。时区名称可以在文档中以交互方式找到："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['US/Eastern', 'US/Hawaii', 'US/Mountain', 'US/Pacific', 'UTC']"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pytz\n",
    "\n",
    "pytz.common_timezones[-5:]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "要从pytz获取时区对象，请使用pytz.timezone："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD>"
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tz = pytz.timezone('America/New_York')\n",
    "\n",
    "tz"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "熊猫中的方法将接受时区名称或这些对象。\n",
    "\n",
    "### 时区本地化和转换\n",
    "\n",
    "默认情况下，熊猫中的时间序列是时区幼稚的。 例如，考虑以下时间序列："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [],
   "source": [
    "rng = pd.date_range('3/9/2012 9:30', periods=6, freq='D')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts = pd.Series(np.random.randn(len(rng)), index=rng)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-03-09 09:30:00   -0.120738\n",
       "2012-03-10 09:30:00   -0.653282\n",
       "2012-03-11 09:30:00    0.465504\n",
       "2012-03-12 09:30:00    0.788703\n",
       "2012-03-13 09:30:00   -2.239855\n",
       "2012-03-14 09:30:00   -1.638225\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "索引的tz字段为None："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "None\n"
     ]
    }
   ],
   "source": [
    "print(ts.index.tz)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以设置时区来生成日期范围："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2012-03-09 09:30:00+00:00', '2012-03-10 09:30:00+00:00',\n",
       "               '2012-03-11 09:30:00+00:00', '2012-03-12 09:30:00+00:00',\n",
       "               '2012-03-13 09:30:00+00:00', '2012-03-14 09:30:00+00:00',\n",
       "               '2012-03-15 09:30:00+00:00', '2012-03-16 09:30:00+00:00',\n",
       "               '2012-03-17 09:30:00+00:00', '2012-03-18 09:30:00+00:00'],\n",
       "              dtype='datetime64[ns, UTC]', freq='D')"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.date_range('3/9/2012 9:30', periods=10, freq='D', tz='UTC')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从朴素到本地化的转换由tz_localize方法处理："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-03-09 09:30:00   -0.120738\n",
       "2012-03-10 09:30:00   -0.653282\n",
       "2012-03-11 09:30:00    0.465504\n",
       "2012-03-12 09:30:00    0.788703\n",
       "2012-03-13 09:30:00   -2.239855\n",
       "2012-03-14 09:30:00   -1.638225\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts_utc = ts.tz_localize('America/New_York')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-03-09 09:30:00-05:00   -0.120738\n",
       "2012-03-10 09:30:00-05:00   -0.653282\n",
       "2012-03-11 09:30:00-04:00    0.465504\n",
       "2012-03-12 09:30:00-04:00    0.788703\n",
       "2012-03-13 09:30:00-04:00   -2.239855\n",
       "2012-03-14 09:30:00-04:00   -1.638225\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts_utc"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对于前面的时间序列，它跨越了America / New_York时区的DST转换，我们可以本地化为EST并转换为UTC或柏林时间："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-03-09 14:30:00+00:00   -0.120738\n",
       "2012-03-10 14:30:00+00:00   -0.653282\n",
       "2012-03-11 13:30:00+00:00    0.465504\n",
       "2012-03-12 13:30:00+00:00    0.788703\n",
       "2012-03-13 13:30:00+00:00   -2.239855\n",
       "2012-03-14 13:30:00+00:00   -1.638225\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts_eastern = ts.tz_localize('America/New_York')\n",
    "ts_eastern.tz_convert('UTC')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-03-09 15:30:00+01:00   -0.120738\n",
       "2012-03-10 15:30:00+01:00   -0.653282\n",
       "2012-03-11 14:30:00+01:00    0.465504\n",
       "2012-03-12 14:30:00+01:00    0.788703\n",
       "2012-03-13 14:30:00+01:00   -2.239855\n",
       "2012-03-14 14:30:00+01:00   -1.638225\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 127,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts_eastern.tz_convert('Europe/Berlin')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "tz_localize和tz_convert也是DatetimeIndex的实例方法："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2012-03-09 09:30:00+08:00', '2012-03-10 09:30:00+08:00',\n",
       "               '2012-03-11 09:30:00+08:00', '2012-03-12 09:30:00+08:00',\n",
       "               '2012-03-13 09:30:00+08:00', '2012-03-14 09:30:00+08:00'],\n",
       "              dtype='datetime64[ns, Asia/Shanghai]', freq='D')"
      ]
     },
     "execution_count": 128,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.index.tz_localize('Asia/Shanghai')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> 警告：本地化朴素的时间戳还将检查夏时制时间转换周围是否存在模棱两可或不存在的时间。\n",
    "\n",
    "### 使用时区感知时间戳对象的操作\n",
    "\n",
    "与时间序列和日期范围类似，可以将单个Timestamp对象类似地从原始位置本地化到时区，并将其从一个时区转换为另一个时区："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [],
   "source": [
    "stamp = pd.Timestamp('2011-03-12 04:00')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [],
   "source": [
    "stamp_utc = stamp.tz_localize('utc')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2011-03-11 23:00:00-0500', tz='America/New_York')"
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp_utc.tz_convert('America/New_York')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "您还可以在创建时间戳时传递时区："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [],
   "source": [
    "stamp_moscow = pd.Timestamp('2011-03-12 04:00', tz='Europe/Moscow')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2011-03-12 04:00:00+0300', tz='Europe/Moscow')"
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp_moscow"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "自Unix时代（1970年1月1日）以来，可识别时区的Timestamp对象在内部存储UTC时间戳值（以纳秒为单位）。此UTC值在时区转换之间是不变的："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1299902400000000000"
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp_utc.value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1299902400000000000"
      ]
     },
     "execution_count": 139,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp_utc.tz_convert('America/New_York').value"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当使用熊猫的DateOffset对象执行时间算术运算时，熊猫会尽可能考虑夏令时的转换。在这里，我们构造在DST转换（向前和向后）之前发生的时间戳。首先，在转换为DST之前30分钟："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pandas.tseries.offsets import Hour"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [],
   "source": [
    "stamp = pd.Timestamp('2012-03-12 01:30', tz='US/Eastern')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2012-03-12 01:30:00-0400', tz='US/Eastern')"
      ]
     },
     "execution_count": 144,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2012-03-12 02:30:00-0400', tz='US/Eastern')"
      ]
     },
     "execution_count": 145,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp + Hour()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "然后，在退出DST之前90分钟："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [],
   "source": [
    "stamp = pd.Timestamp('2012-11-04 00:30', tz='US/Eastern')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2012-11-04 00:30:00-0400', tz='US/Eastern')"
      ]
     },
     "execution_count": 147,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2012-11-04 01:30:00-0500', tz='US/Eastern')"
      ]
     },
     "execution_count": 148,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp + 2 * Hour()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 不同时区之间的操作\n",
    "\n",
    "如果将两个具有不同时区的时间序列组合在一起，则结果将是UTC。由于时间戳记以UTC形式存储在幕后，因此这是一种简单的操作，不需要进行任何转换："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {},
   "outputs": [],
   "source": [
    "rng = pd.date_range('3/7/2012 9:30', periods=10, freq='B')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts = pd.Series(np.random.randn(len(rng)), index=rng)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-03-07 09:30:00   -0.765489\n",
       "2012-03-08 09:30:00   -1.769964\n",
       "2012-03-09 09:30:00    1.078446\n",
       "2012-03-12 09:30:00    0.200598\n",
       "2012-03-13 09:30:00    0.158352\n",
       "2012-03-14 09:30:00   -0.198946\n",
       "2012-03-15 09:30:00   -0.817841\n",
       "2012-03-16 09:30:00   -1.471774\n",
       "2012-03-19 09:30:00    0.816290\n",
       "2012-03-20 09:30:00    1.935733\n",
       "Freq: B, dtype: float64"
      ]
     },
     "execution_count": 152,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts1 = ts[:7].tz_localize('Europe/London')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts2 = ts1[2:].tz_convert('Europe/Moscow')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "metadata": {},
   "outputs": [],
   "source": [
    "result = ts1 + ts2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-03-07 09:30:00+00:00         NaN\n",
       "2012-03-08 09:30:00+00:00         NaN\n",
       "2012-03-09 09:30:00+00:00    2.156893\n",
       "2012-03-12 09:30:00+00:00    0.401197\n",
       "2012-03-13 09:30:00+00:00    0.316704\n",
       "2012-03-14 09:30:00+00:00   -0.397893\n",
       "2012-03-15 09:30:00+00:00   -1.635682\n",
       "Freq: B, dtype: float64"
      ]
     },
     "execution_count": 160,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2012-03-07 09:30:00+00:00', '2012-03-08 09:30:00+00:00',\n",
       "               '2012-03-09 09:30:00+00:00', '2012-03-12 09:30:00+00:00',\n",
       "               '2012-03-13 09:30:00+00:00', '2012-03-14 09:30:00+00:00',\n",
       "               '2012-03-15 09:30:00+00:00'],\n",
       "              dtype='datetime64[ns, UTC]', freq='B')"
      ]
     },
     "execution_count": 161,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result.index"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 11.5 期间和期间算术\n",
    "\n",
    "期间代表时间跨度，例如天，月，季度或年。Period类代表此数据类型，需要表11-4中的字符串或整数以及频率："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {},
   "outputs": [],
   "source": [
    "p = pd.Period(2007, freq='A-DEC')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2007', 'A-DEC')"
      ]
     },
     "execution_count": 163,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在这种情况下，Period对象表示从2007年1月1日到2007年12月31日（包括首尾两天）的完整时间范围。方便地，从周期中添加和减去整数会产生按其频率移动的效果："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2012', 'A-DEC')"
      ]
     },
     "execution_count": 164,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p + 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2005', 'A-DEC')"
      ]
     },
     "execution_count": 165,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p - 2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果两个周期的频率相同，则它们的区别在于它们之间的单位数："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<7 * YearEnds: month=12>"
      ]
     },
     "execution_count": 166,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Period('2014', freq='A-DEC') - p"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以使用period_range函数构造规则的周期范围："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "metadata": {},
   "outputs": [],
   "source": [
    "rng = pd.period_range('2000-01-01', '2000-06-30', freq='M')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PeriodIndex(['2000-01', '2000-02', '2000-03', '2000-04', '2000-05', '2000-06'], dtype='period[M]', freq='M')"
      ]
     },
     "execution_count": 173,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rng"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "PeriodIndex类存储一系列的周期，并且可以用作任何熊猫数据结构中的轴索引："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01    0.198605\n",
       "2000-02    1.521674\n",
       "2000-03   -0.709251\n",
       "2000-04    1.491966\n",
       "2000-05   -1.052556\n",
       "2000-06    1.508510\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 174,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Series(np.random.randn(6), index=rng)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果您有一个字符串数组，则还可以使用PeriodIndex类："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PeriodIndex(['2001Q3', '2002Q2', '2003Q1'], dtype='period[Q-DEC]', freq='Q-DEC')"
      ]
     },
     "execution_count": 176,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "values = ['2001Q3', '2002Q2', '2003Q1']\n",
    "\n",
    "index = pd.PeriodIndex(values, freq='Q-DEC')\n",
    "\n",
    "index"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 周期频率转换\n",
    "\n",
    "可以使用其asfreq方法将Periods和PeriodIndex对象转换为另一个频率。例如，假设我们有一个年度期间，并希望将其转换为在年初或年末的每月期间。 这很简单："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 177,
   "metadata": {},
   "outputs": [],
   "source": [
    "p = pd.Period('2007', freq='A-DEC')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 178,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2007', 'A-DEC')"
      ]
     },
     "execution_count": 178,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2007-01', 'M')"
      ]
     },
     "execution_count": 179,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p.asfreq('M', how='start')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2007-12', 'M')"
      ]
     },
     "execution_count": 180,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p.asfreq('M', how='end')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "您可以将Period（'2007'，'A-DEC'）视为指向时间跨度的一种游标，该时间跨度按月周期细分。有关此说明，请参见图11-1。对于结束于12月以外的月份的会计年度，相应的每月子期间是不同的：\n",
    "\n",
    "![image](images/11-5.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {},
   "outputs": [],
   "source": [
    "p = pd.Period('2007', freq='A-JUN')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2007', 'A-JUN')"
      ]
     },
     "execution_count": 182,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 183,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2006-07', 'M')"
      ]
     },
     "execution_count": 183,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p.asfreq('M', 'start')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2007-06', 'M')"
      ]
     },
     "execution_count": 184,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p.asfreq('M', 'end')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当您从高频转换为低频时，大熊猫会根据子时段“所属”的位置来确定超级时段。例如，按照A-JUN频率，2007年8月实际上是2008年期间的一部分："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 188,
   "metadata": {},
   "outputs": [],
   "source": [
    "p = pd.Period('Aug-2007', 'M')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 196,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2008', 'A-JUN')"
      ]
     },
     "execution_count": 196,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p.asfreq('A-JUN')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以使用相同的语义类似地转换整个PeriodIndex对象或时间序列："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 197,
   "metadata": {},
   "outputs": [],
   "source": [
    "rng = pd.period_range('2006', '2009', freq='A-DEC')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 198,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts = pd.Series(np.random.randn(len(rng)), index=rng)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 199,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2006   -0.955067\n",
       "2007    1.195588\n",
       "2008   -0.377835\n",
       "2009    1.965553\n",
       "Freq: A-DEC, dtype: float64"
      ]
     },
     "execution_count": 199,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 200,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2006-01   -0.955067\n",
       "2007-01    1.195588\n",
       "2008-01   -0.377835\n",
       "2009-01    1.965553\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 200,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.asfreq('M', how='start')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在此，将年度期间替换为与每个年度期间内的第一个月相对应的每月期间。相反，如果我们想要每年的最后一个工作日，则可以使用“ B”频率，并指出我们希望该期间的结束："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 203,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2006-12-29   -0.955067\n",
       "2007-12-31    1.195588\n",
       "2008-12-31   -0.377835\n",
       "2009-12-31    1.965553\n",
       "Freq: B, dtype: float64"
      ]
     },
     "execution_count": 203,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.asfreq('B', how='end')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 季度周期频率\n",
    "\n",
    "季度数据是会计，财务和其他领域的标准数据。相对于一个会计年度结束，通常报告许多季度数据，通常是该年度的12个月中的最后一个日历或工作日。因此，根据会计年度结束，2012Q4期间具有不同的含义。大熊猫支持从Q-JAN到Q-DEC的所有12种可能的季度频率："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 204,
   "metadata": {},
   "outputs": [],
   "source": [
    "p = pd.Period('2012Q4', freq='Q-JAN')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2012Q4', 'Q-JAN')"
      ]
     },
     "execution_count": 205,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对于1月结束的会计年度，2012Q4从11月到1月运行，您可以将其转换为每日频率进行检查。 有关说明，请参见图11-2。\n",
    "\n",
    "![image](images/11-5-2.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 206,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2011-11-01', 'D')"
      ]
     },
     "execution_count": 206,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p.asfreq('D', 'start')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 207,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2012-01-31', 'D')"
      ]
     },
     "execution_count": 207,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p.asfreq('D', 'end')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "因此，可以进行简单的周期算术；例如，要获取该季度倒数第二个工作日下午4点的时间戳，您可以执行以下操作："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 208,
   "metadata": {},
   "outputs": [],
   "source": [
    "p4pm = (p.asfreq('B', 'e') - 1).asfreq('T', 's') + 16 * 60"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 209,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2012-01-30 16:00', 'T')"
      ]
     },
     "execution_count": 209,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p4pm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2012-01-30 16:00:00')"
      ]
     },
     "execution_count": 210,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p4pm.to_timestamp()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "您可以使用period_range生成季度范围。算术也相同："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 211,
   "metadata": {},
   "outputs": [],
   "source": [
    "rng = pd.period_range('2011Q3', '2012Q4', freq='Q-JAN')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 212,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts = pd.Series(np.arange(len(rng)), index=rng)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 213,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2011Q3    0\n",
       "2011Q4    1\n",
       "2012Q1    2\n",
       "2012Q2    3\n",
       "2012Q3    4\n",
       "2012Q4    5\n",
       "Freq: Q-JAN, dtype: int64"
      ]
     },
     "execution_count": 213,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 214,
   "metadata": {},
   "outputs": [],
   "source": [
    "new_rng = (rng.asfreq('B', 'e') - 1).asfreq('T', 's') + 16 * 60"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 215,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts.index = new_rng.to_timestamp()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 216,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2010-10-28 16:00:00    0\n",
       "2011-01-28 16:00:00    1\n",
       "2011-04-28 16:00:00    2\n",
       "2011-07-28 16:00:00    3\n",
       "2011-10-28 16:00:00    4\n",
       "2012-01-30 16:00:00    5\n",
       "dtype: int64"
      ]
     },
     "execution_count": 216,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 将时间戳转换为句点（并返回）\n",
    "\n",
    "可以使用to_period方法将按时间戳索引的Series和DataFrame对象转换为周期："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 217,
   "metadata": {},
   "outputs": [],
   "source": [
    "rng = pd.date_range('2000-01-01', periods=3, freq='M')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 218,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts = pd.Series(np.random.randn(3), index=rng)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 219,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31    1.452341\n",
       "2000-02-29    0.552522\n",
       "2000-03-31   -0.304061\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 219,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 220,
   "metadata": {},
   "outputs": [],
   "source": [
    "pts = ts.to_period()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 221,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01    1.452341\n",
       "2000-02    0.552522\n",
       "2000-03   -0.304061\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 221,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pts"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于周期是指不重叠的时间跨度，因此时间戳只能属于给定频率的单个周期。虽然默认情况下会根据时间戳推断出新的PeriodIndex的频率，但您可以指定所需的任何频率。结果中有重复的句段也没有问题："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 222,
   "metadata": {},
   "outputs": [],
   "source": [
    "rng = pd.date_range('1/29/2000', periods=6, freq='D')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 223,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts2 = pd.Series(np.random.randn(6), index=rng)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 224,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-29   -0.730865\n",
       "2000-01-30   -0.465311\n",
       "2000-01-31    1.764031\n",
       "2000-02-01   -0.995423\n",
       "2000-02-02    2.360310\n",
       "2000-02-03    0.185080\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 224,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 226,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01   -0.730865\n",
       "2000-01   -0.465311\n",
       "2000-01    1.764031\n",
       "2000-02   -0.995423\n",
       "2000-02    2.360310\n",
       "2000-02    0.185080\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 226,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts2.to_period('M')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "要转换回时间戳，请使用to_timestamp："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 227,
   "metadata": {},
   "outputs": [],
   "source": [
    "pts = ts2.to_period()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 228,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-29   -0.730865\n",
       "2000-01-30   -0.465311\n",
       "2000-01-31    1.764031\n",
       "2000-02-01   -0.995423\n",
       "2000-02-02    2.360310\n",
       "2000-02-03    0.185080\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 228,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 230,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-29 23:59:59.999999999   -0.730865\n",
       "2000-01-30 23:59:59.999999999   -0.465311\n",
       "2000-01-31 23:59:59.999999999    1.764031\n",
       "2000-02-01 23:59:59.999999999   -0.995423\n",
       "2000-02-02 23:59:59.999999999    2.360310\n",
       "2000-02-03 23:59:59.999999999    0.185080\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 230,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pts.to_timestamp(how='end')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 从数组创建PeriodIndex\n",
    "\n",
    "固定频率数据集有时会与跨多个列的时间跨度信息一起存储。例如，在此宏观经济数据集中，年份和季度位于不同的列中："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 231,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = pd.read_csv('examples/macrodata.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 240,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>year</th>\n",
       "      <th>quarter</th>\n",
       "      <th>realgdp</th>\n",
       "      <th>realcons</th>\n",
       "      <th>realinv</th>\n",
       "      <th>realgovt</th>\n",
       "      <th>realdpi</th>\n",
       "      <th>cpi</th>\n",
       "      <th>m1</th>\n",
       "      <th>tbilrate</th>\n",
       "      <th>unemp</th>\n",
       "      <th>pop</th>\n",
       "      <th>infl</th>\n",
       "      <th>realint</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1959.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2710.349</td>\n",
       "      <td>1707.4</td>\n",
       "      <td>286.898</td>\n",
       "      <td>470.045</td>\n",
       "      <td>1886.9</td>\n",
       "      <td>28.98</td>\n",
       "      <td>139.7</td>\n",
       "      <td>2.82</td>\n",
       "      <td>5.8</td>\n",
       "      <td>177.146</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1959.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2778.801</td>\n",
       "      <td>1733.7</td>\n",
       "      <td>310.859</td>\n",
       "      <td>481.301</td>\n",
       "      <td>1919.7</td>\n",
       "      <td>29.15</td>\n",
       "      <td>141.7</td>\n",
       "      <td>3.08</td>\n",
       "      <td>5.1</td>\n",
       "      <td>177.830</td>\n",
       "      <td>2.34</td>\n",
       "      <td>0.74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1959.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2775.488</td>\n",
       "      <td>1751.8</td>\n",
       "      <td>289.226</td>\n",
       "      <td>491.260</td>\n",
       "      <td>1916.4</td>\n",
       "      <td>29.35</td>\n",
       "      <td>140.5</td>\n",
       "      <td>3.82</td>\n",
       "      <td>5.3</td>\n",
       "      <td>178.657</td>\n",
       "      <td>2.74</td>\n",
       "      <td>1.09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1959.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>2785.204</td>\n",
       "      <td>1753.7</td>\n",
       "      <td>299.356</td>\n",
       "      <td>484.052</td>\n",
       "      <td>1931.3</td>\n",
       "      <td>29.37</td>\n",
       "      <td>140.0</td>\n",
       "      <td>4.33</td>\n",
       "      <td>5.6</td>\n",
       "      <td>179.386</td>\n",
       "      <td>0.27</td>\n",
       "      <td>4.06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1960.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2847.699</td>\n",
       "      <td>1770.5</td>\n",
       "      <td>331.722</td>\n",
       "      <td>462.199</td>\n",
       "      <td>1955.5</td>\n",
       "      <td>29.54</td>\n",
       "      <td>139.6</td>\n",
       "      <td>3.50</td>\n",
       "      <td>5.2</td>\n",
       "      <td>180.007</td>\n",
       "      <td>2.31</td>\n",
       "      <td>1.19</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     year  quarter   realgdp  realcons  realinv  realgovt  realdpi    cpi  \\\n",
       "0  1959.0      1.0  2710.349    1707.4  286.898   470.045   1886.9  28.98   \n",
       "1  1959.0      2.0  2778.801    1733.7  310.859   481.301   1919.7  29.15   \n",
       "2  1959.0      3.0  2775.488    1751.8  289.226   491.260   1916.4  29.35   \n",
       "3  1959.0      4.0  2785.204    1753.7  299.356   484.052   1931.3  29.37   \n",
       "4  1960.0      1.0  2847.699    1770.5  331.722   462.199   1955.5  29.54   \n",
       "\n",
       "      m1  tbilrate  unemp      pop  infl  realint  \n",
       "0  139.7      2.82    5.8  177.146  0.00     0.00  \n",
       "1  141.7      3.08    5.1  177.830  2.34     0.74  \n",
       "2  140.5      3.82    5.3  178.657  2.74     1.09  \n",
       "3  140.0      4.33    5.6  179.386  0.27     4.06  \n",
       "4  139.6      3.50    5.2  180.007  2.31     1.19  "
      ]
     },
     "execution_count": 240,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 235,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0      1959.0\n",
       "1      1959.0\n",
       "2      1959.0\n",
       "3      1959.0\n",
       "4      1960.0\n",
       "        ...  \n",
       "198    2008.0\n",
       "199    2008.0\n",
       "200    2009.0\n",
       "201    2009.0\n",
       "202    2009.0\n",
       "Name: year, Length: 203, dtype: float64"
      ]
     },
     "execution_count": 235,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.year"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 236,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0      1.0\n",
       "1      2.0\n",
       "2      3.0\n",
       "3      4.0\n",
       "4      1.0\n",
       "      ... \n",
       "198    3.0\n",
       "199    4.0\n",
       "200    1.0\n",
       "201    2.0\n",
       "202    3.0\n",
       "Name: quarter, Length: 203, dtype: float64"
      ]
     },
     "execution_count": 236,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.quarter"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通过以频率将这些数组传递给PeriodIndex，可以将它们组合以形成DataFrame的索引："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 237,
   "metadata": {},
   "outputs": [],
   "source": [
    "index = pd.PeriodIndex(year=data.year, quarter=data.quarter, freq='Q-DEC')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 238,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PeriodIndex(['1959Q1', '1959Q2', '1959Q3', '1959Q4', '1960Q1', '1960Q2',\n",
       "             '1960Q3', '1960Q4', '1961Q1', '1961Q2',\n",
       "             ...\n",
       "             '2007Q2', '2007Q3', '2007Q4', '2008Q1', '2008Q2', '2008Q3',\n",
       "             '2008Q4', '2009Q1', '2009Q2', '2009Q3'],\n",
       "            dtype='period[Q-DEC]', length=203, freq='Q-DEC')"
      ]
     },
     "execution_count": 238,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 241,
   "metadata": {},
   "outputs": [],
   "source": [
    "data.index = index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 242,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1959Q1    0.00\n",
       "1959Q2    2.34\n",
       "1959Q3    2.74\n",
       "1959Q4    0.27\n",
       "1960Q1    2.31\n",
       "          ... \n",
       "2008Q3   -3.16\n",
       "2008Q4   -8.79\n",
       "2009Q1    0.94\n",
       "2009Q2    3.37\n",
       "2009Q3    3.56\n",
       "Freq: Q-DEC, Name: infl, Length: 203, dtype: float64"
      ]
     },
     "execution_count": 242,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.infl"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 11.6 重采样和频率转换\n",
    "\n",
    "重采样是指将时间序列从一个频率转换为另一频率的过程。将较高频率的数据聚合为较低的频率称为下采样，而将较低的频率转换为较高的频率称为上采样。并非所有的重采样都属于这两个类别。例如，将W-WED（在星期三每周一次）转换为W-FRI既不是上采样也不是下采样。\n",
    "\n",
    "熊猫对象配备了重新采样方法，这是所有频率转换的主要功能。重采样具有与groupby类似的API；您调用resample对数据进行分组，然后调用聚合函数："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 243,
   "metadata": {},
   "outputs": [],
   "source": [
    "rng = pd.date_range('2000-01-01', periods=100, freq='D')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 244,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts = pd.Series(np.random.randn(len(rng)), index=rng)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 245,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-01    3.350840\n",
       "2000-01-02   -1.138032\n",
       "2000-01-03    0.520650\n",
       "2000-01-04   -1.023838\n",
       "2000-01-05   -0.785142\n",
       "                ...   \n",
       "2000-04-05   -1.437069\n",
       "2000-04-06    1.038737\n",
       "2000-04-07    1.236756\n",
       "2000-04-08   -0.296264\n",
       "2000-04-09    0.955148\n",
       "Freq: D, Length: 100, dtype: float64"
      ]
     },
     "execution_count": 245,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 246,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31    0.064309\n",
       "2000-02-29    0.117465\n",
       "2000-03-31   -0.386508\n",
       "2000-04-30    0.129843\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 246,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.resample('M').mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 247,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01    0.064309\n",
       "2000-02    0.117465\n",
       "2000-03   -0.386508\n",
       "2000-04    0.129843\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 247,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.resample('M', kind='period').mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "重采样是一种灵活的高性能方法，可用于处理非常大的时间序列。以下各节中的示例说明了其语义和用法。表11-5总结了其一些选项。\n",
    "\n",
    "### 下采样\n",
    "\n",
    "将数据聚合到规则的较低频率是很正常的时间序列任务。您正在汇总的数据不需要经常固定；所需的频率定义了bin边缘，这些边缘用于将时间序列切成小块进行汇总。例如，要转换为每月的“ M”或“ BM”，您需要将数据分成一个月的间隔。据说每个间隔都是半开放的。一个数据点只能属于一个时间间隔，时间间隔的并集必须组成整个时间范围。使用重采样对数据进行下采样时，需要考虑以下几点：\n",
    "\n",
    "- 每个间隔的哪一侧关闭\n",
    "- 如何用间隔的开始或结束标记每个聚合的容器\n",
    "\n",
    "为了说明，让我们看一些一分钟的数据："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 249,
   "metadata": {},
   "outputs": [],
   "source": [
    "rng = pd.date_range('2000-01-01', periods=12, freq='T')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 250,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts = pd.Series(np.arange(12), index=rng)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 251,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-01 00:00:00     0\n",
       "2000-01-01 00:01:00     1\n",
       "2000-01-01 00:02:00     2\n",
       "2000-01-01 00:03:00     3\n",
       "2000-01-01 00:04:00     4\n",
       "2000-01-01 00:05:00     5\n",
       "2000-01-01 00:06:00     6\n",
       "2000-01-01 00:07:00     7\n",
       "2000-01-01 00:08:00     8\n",
       "2000-01-01 00:09:00     9\n",
       "2000-01-01 00:10:00    10\n",
       "2000-01-01 00:11:00    11\n",
       "Freq: T, dtype: int64"
      ]
     },
     "execution_count": 251,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "假设您想通过将每个组的总和将此数据聚合为五分钟的块或条形："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 255,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-01 00:00:00    10\n",
       "2000-01-01 00:05:00    35\n",
       "2000-01-01 00:10:00    21\n",
       "Freq: 5T, dtype: int64"
      ]
     },
     "execution_count": 255,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.resample('5min').sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "您通过的频率以五分钟为增量定义垃圾箱边缘。默认情况下，左边的边沿是包含边界的，因此00:00的值包含在00:00到00:05的时间间隔中。1传递closed ='right'可以更改右边的关闭时间间隔："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 256,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1999-12-31 23:55:00     0\n",
       "2000-01-01 00:00:00    15\n",
       "2000-01-01 00:05:00    40\n",
       "2000-01-01 00:10:00    11\n",
       "Freq: 5T, dtype: int64"
      ]
     },
     "execution_count": 256,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.resample('5min', closed='right').sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "产生的时间序列由每个容器左侧的时间戳标记。通过传递label ='right'，您可以使用正确的bin边缘标记它们："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 258,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-01 00:00:00     0\n",
       "2000-01-01 00:05:00    15\n",
       "2000-01-01 00:10:00    40\n",
       "2000-01-01 00:15:00    11\n",
       "Freq: 5T, dtype: int64"
      ]
     },
     "execution_count": 258,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.resample('5min', closed='right', label='right').sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "有关将分钟频率数据重新采样到五分钟频率的图示，请参见图11-3。\n",
    "\n",
    "![image](images/11-6.png)\n",
    "\n",
    "最后，您可能希望将结果索引移动一定量，例如，从右边缘减去一秒钟，以使其更加清楚时间戳记所指的间隔。为此，将一个字符串或日期偏移量传递给loffset："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 259,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1999-12-31 23:59:59     0\n",
       "2000-01-01 00:04:59    15\n",
       "2000-01-01 00:09:59    40\n",
       "2000-01-01 00:14:59    11\n",
       "Freq: 5T, dtype: int64"
      ]
     },
     "execution_count": 259,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.resample('5min', closed='right', label='right', loffset='-1s').sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "您也可以通过在没有loffset的结果上调用shift方法来实现loffset的效果。\n",
    "\n",
    "#### 开-高-低-闭（OHLC）重采样\n",
    "\n",
    "在金融中，汇总时间序列的一种流行方法是为每个存储区计算四个值：第一个（打开），最后一个（关闭），最大（高）和最小（低）值。通过使用ohlc聚合函数，您将获得一个包含包含这四个聚合的列的DataFrame，这些列可以在一次数据扫描中有效地进行计算："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 260,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>close</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01-01 00:00:00</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-01 00:05:00</th>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-01 00:10:00</th>\n",
       "      <td>10</td>\n",
       "      <td>11</td>\n",
       "      <td>10</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     open  high  low  close\n",
       "2000-01-01 00:00:00     0     4    0      4\n",
       "2000-01-01 00:05:00     5     9    5      9\n",
       "2000-01-01 00:10:00    10    11   10     11"
      ]
     },
     "execution_count": 260,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.resample('5min').ohlc()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 上采样和内插\n",
    "\n",
    "从低频转换为高频时，不需要聚合。让我们考虑一个包含每周数据的DataFrame："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 261,
   "metadata": {},
   "outputs": [],
   "source": [
    "frame = pd.DataFrame(np.random.randn(2, 4),\n",
    "                     index=pd.date_range('1/1/2000', periods=2, freq='W-WED'),\n",
    "                     columns=['Colorado', 'Texas', 'New York', 'Ohio'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 262,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01-05</th>\n",
       "      <td>-2.244713</td>\n",
       "      <td>2.019729</td>\n",
       "      <td>0.148451</td>\n",
       "      <td>0.185990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-12</th>\n",
       "      <td>-1.287029</td>\n",
       "      <td>-0.753038</td>\n",
       "      <td>0.745041</td>\n",
       "      <td>-1.547941</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            Colorado     Texas  New York      Ohio\n",
       "2000-01-05 -2.244713  2.019729  0.148451  0.185990\n",
       "2000-01-12 -1.287029 -0.753038  0.745041 -1.547941"
      ]
     },
     "execution_count": 262,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当您对这些数据使用聚合函数时，每个组只有一个值，缺少值会导致间隔。我们使用asfreq方法将其转换为更高的频率，而不进行任何聚合："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 270,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_daily = frame.resample('D').asfreq()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 271,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01-05</th>\n",
       "      <td>-2.244713</td>\n",
       "      <td>2.019729</td>\n",
       "      <td>0.148451</td>\n",
       "      <td>0.185990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-06</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-07</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-08</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-09</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-10</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-11</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-12</th>\n",
       "      <td>-1.287029</td>\n",
       "      <td>-0.753038</td>\n",
       "      <td>0.745041</td>\n",
       "      <td>-1.547941</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            Colorado     Texas  New York      Ohio\n",
       "2000-01-05 -2.244713  2.019729  0.148451  0.185990\n",
       "2000-01-06       NaN       NaN       NaN       NaN\n",
       "2000-01-07       NaN       NaN       NaN       NaN\n",
       "2000-01-08       NaN       NaN       NaN       NaN\n",
       "2000-01-09       NaN       NaN       NaN       NaN\n",
       "2000-01-10       NaN       NaN       NaN       NaN\n",
       "2000-01-11       NaN       NaN       NaN       NaN\n",
       "2000-01-12 -1.287029 -0.753038  0.745041 -1.547941"
      ]
     },
     "execution_count": 271,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_daily"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "假设您想填写非星期三的每个每周值。fillna和reindex方法中可用的相同填充或插值方法可用于重新采样："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 265,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01-05</th>\n",
       "      <td>-2.244713</td>\n",
       "      <td>2.019729</td>\n",
       "      <td>0.148451</td>\n",
       "      <td>0.185990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-06</th>\n",
       "      <td>-2.244713</td>\n",
       "      <td>2.019729</td>\n",
       "      <td>0.148451</td>\n",
       "      <td>0.185990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-07</th>\n",
       "      <td>-2.244713</td>\n",
       "      <td>2.019729</td>\n",
       "      <td>0.148451</td>\n",
       "      <td>0.185990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-08</th>\n",
       "      <td>-2.244713</td>\n",
       "      <td>2.019729</td>\n",
       "      <td>0.148451</td>\n",
       "      <td>0.185990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-09</th>\n",
       "      <td>-2.244713</td>\n",
       "      <td>2.019729</td>\n",
       "      <td>0.148451</td>\n",
       "      <td>0.185990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-10</th>\n",
       "      <td>-2.244713</td>\n",
       "      <td>2.019729</td>\n",
       "      <td>0.148451</td>\n",
       "      <td>0.185990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-11</th>\n",
       "      <td>-2.244713</td>\n",
       "      <td>2.019729</td>\n",
       "      <td>0.148451</td>\n",
       "      <td>0.185990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-12</th>\n",
       "      <td>-1.287029</td>\n",
       "      <td>-0.753038</td>\n",
       "      <td>0.745041</td>\n",
       "      <td>-1.547941</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            Colorado     Texas  New York      Ohio\n",
       "2000-01-05 -2.244713  2.019729  0.148451  0.185990\n",
       "2000-01-06 -2.244713  2.019729  0.148451  0.185990\n",
       "2000-01-07 -2.244713  2.019729  0.148451  0.185990\n",
       "2000-01-08 -2.244713  2.019729  0.148451  0.185990\n",
       "2000-01-09 -2.244713  2.019729  0.148451  0.185990\n",
       "2000-01-10 -2.244713  2.019729  0.148451  0.185990\n",
       "2000-01-11 -2.244713  2.019729  0.148451  0.185990\n",
       "2000-01-12 -1.287029 -0.753038  0.745041 -1.547941"
      ]
     },
     "execution_count": 265,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame.resample('D').ffill()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "您可以类似地选择仅填充一定数量的向前时间段，以限制使用观察值继续走多远："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 266,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01-05</th>\n",
       "      <td>-2.244713</td>\n",
       "      <td>2.019729</td>\n",
       "      <td>0.148451</td>\n",
       "      <td>0.185990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-06</th>\n",
       "      <td>-2.244713</td>\n",
       "      <td>2.019729</td>\n",
       "      <td>0.148451</td>\n",
       "      <td>0.185990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-07</th>\n",
       "      <td>-2.244713</td>\n",
       "      <td>2.019729</td>\n",
       "      <td>0.148451</td>\n",
       "      <td>0.185990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-08</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-09</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-10</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-11</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-12</th>\n",
       "      <td>-1.287029</td>\n",
       "      <td>-0.753038</td>\n",
       "      <td>0.745041</td>\n",
       "      <td>-1.547941</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            Colorado     Texas  New York      Ohio\n",
       "2000-01-05 -2.244713  2.019729  0.148451  0.185990\n",
       "2000-01-06 -2.244713  2.019729  0.148451  0.185990\n",
       "2000-01-07 -2.244713  2.019729  0.148451  0.185990\n",
       "2000-01-08       NaN       NaN       NaN       NaN\n",
       "2000-01-09       NaN       NaN       NaN       NaN\n",
       "2000-01-10       NaN       NaN       NaN       NaN\n",
       "2000-01-11       NaN       NaN       NaN       NaN\n",
       "2000-01-12 -1.287029 -0.753038  0.745041 -1.547941"
      ]
     },
     "execution_count": 266,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame.resample('D').ffill(limit=2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "值得注意的是，新的日期索引根本不需要与旧的日期索引重叠："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 273,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01-06</th>\n",
       "      <td>-2.244713</td>\n",
       "      <td>2.019729</td>\n",
       "      <td>0.148451</td>\n",
       "      <td>0.185990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-13</th>\n",
       "      <td>-1.287029</td>\n",
       "      <td>-0.753038</td>\n",
       "      <td>0.745041</td>\n",
       "      <td>-1.547941</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            Colorado     Texas  New York      Ohio\n",
       "2000-01-06 -2.244713  2.019729  0.148451  0.185990\n",
       "2000-01-13 -1.287029 -0.753038  0.745041 -1.547941"
      ]
     },
     "execution_count": 273,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame.resample('W-THU').ffill()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 定期重采样\n",
    "\n",
    "对由周期索引的数据进行重采样与时间戳类似："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 274,
   "metadata": {},
   "outputs": [],
   "source": [
    "frame = pd.DataFrame(np.random.randn(24, 4),\n",
    "                     index=pd.period_range('1-2000', '12-2001', freq='M'),\n",
    "                     columns=['Colorado', 'Texas', 'New York', 'Ohio'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 279,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01</th>\n",
       "      <td>-0.952407</td>\n",
       "      <td>-0.490832</td>\n",
       "      <td>-0.896245</td>\n",
       "      <td>1.137145</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-02</th>\n",
       "      <td>-1.389205</td>\n",
       "      <td>-1.980134</td>\n",
       "      <td>-2.374350</td>\n",
       "      <td>-1.196163</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-03</th>\n",
       "      <td>2.024545</td>\n",
       "      <td>-2.645722</td>\n",
       "      <td>-0.585517</td>\n",
       "      <td>0.612934</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-04</th>\n",
       "      <td>-0.390156</td>\n",
       "      <td>-1.055824</td>\n",
       "      <td>0.398726</td>\n",
       "      <td>0.770448</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-05</th>\n",
       "      <td>-0.556767</td>\n",
       "      <td>0.592712</td>\n",
       "      <td>0.415491</td>\n",
       "      <td>0.886106</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         Colorado     Texas  New York      Ohio\n",
       "2000-01 -0.952407 -0.490832 -0.896245  1.137145\n",
       "2000-02 -1.389205 -1.980134 -2.374350 -1.196163\n",
       "2000-03  2.024545 -2.645722 -0.585517  0.612934\n",
       "2000-04 -0.390156 -1.055824  0.398726  0.770448\n",
       "2000-05 -0.556767  0.592712  0.415491  0.886106"
      ]
     },
     "execution_count": 279,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 280,
   "metadata": {},
   "outputs": [],
   "source": [
    "annual_frame = frame.resample('A-DEC').mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 281,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000</th>\n",
       "      <td>-0.041423</td>\n",
       "      <td>-0.440893</td>\n",
       "      <td>-0.315960</td>\n",
       "      <td>0.323637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001</th>\n",
       "      <td>-0.226443</td>\n",
       "      <td>0.534980</td>\n",
       "      <td>-0.138711</td>\n",
       "      <td>-0.136036</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Colorado     Texas  New York      Ohio\n",
       "2000 -0.041423 -0.440893 -0.315960  0.323637\n",
       "2001 -0.226443  0.534980 -0.138711 -0.136036"
      ]
     },
     "execution_count": 281,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "annual_frame"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上采样更加细微，因为您必须决定是否要在新频率的时间跨度的哪一端在重采样之前放置值，就像asfreq方法一样。约定参数默认为“开始”，但也可以为“结束”："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 282,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000Q1</th>\n",
       "      <td>-0.041423</td>\n",
       "      <td>-0.440893</td>\n",
       "      <td>-0.315960</td>\n",
       "      <td>0.323637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000Q2</th>\n",
       "      <td>-0.041423</td>\n",
       "      <td>-0.440893</td>\n",
       "      <td>-0.315960</td>\n",
       "      <td>0.323637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000Q3</th>\n",
       "      <td>-0.041423</td>\n",
       "      <td>-0.440893</td>\n",
       "      <td>-0.315960</td>\n",
       "      <td>0.323637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000Q4</th>\n",
       "      <td>-0.041423</td>\n",
       "      <td>-0.440893</td>\n",
       "      <td>-0.315960</td>\n",
       "      <td>0.323637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q1</th>\n",
       "      <td>-0.226443</td>\n",
       "      <td>0.534980</td>\n",
       "      <td>-0.138711</td>\n",
       "      <td>-0.136036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q2</th>\n",
       "      <td>-0.226443</td>\n",
       "      <td>0.534980</td>\n",
       "      <td>-0.138711</td>\n",
       "      <td>-0.136036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q3</th>\n",
       "      <td>-0.226443</td>\n",
       "      <td>0.534980</td>\n",
       "      <td>-0.138711</td>\n",
       "      <td>-0.136036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q4</th>\n",
       "      <td>-0.226443</td>\n",
       "      <td>0.534980</td>\n",
       "      <td>-0.138711</td>\n",
       "      <td>-0.136036</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Colorado     Texas  New York      Ohio\n",
       "2000Q1 -0.041423 -0.440893 -0.315960  0.323637\n",
       "2000Q2 -0.041423 -0.440893 -0.315960  0.323637\n",
       "2000Q3 -0.041423 -0.440893 -0.315960  0.323637\n",
       "2000Q4 -0.041423 -0.440893 -0.315960  0.323637\n",
       "2001Q1 -0.226443  0.534980 -0.138711 -0.136036\n",
       "2001Q2 -0.226443  0.534980 -0.138711 -0.136036\n",
       "2001Q3 -0.226443  0.534980 -0.138711 -0.136036\n",
       "2001Q4 -0.226443  0.534980 -0.138711 -0.136036"
      ]
     },
     "execution_count": 282,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "annual_frame.resample('Q-DEC').ffill()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 284,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000Q4</th>\n",
       "      <td>-0.041423</td>\n",
       "      <td>-0.440893</td>\n",
       "      <td>-0.315960</td>\n",
       "      <td>0.323637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q1</th>\n",
       "      <td>-0.041423</td>\n",
       "      <td>-0.440893</td>\n",
       "      <td>-0.315960</td>\n",
       "      <td>0.323637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q2</th>\n",
       "      <td>-0.041423</td>\n",
       "      <td>-0.440893</td>\n",
       "      <td>-0.315960</td>\n",
       "      <td>0.323637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q3</th>\n",
       "      <td>-0.041423</td>\n",
       "      <td>-0.440893</td>\n",
       "      <td>-0.315960</td>\n",
       "      <td>0.323637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q4</th>\n",
       "      <td>-0.226443</td>\n",
       "      <td>0.534980</td>\n",
       "      <td>-0.138711</td>\n",
       "      <td>-0.136036</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Colorado     Texas  New York      Ohio\n",
       "2000Q4 -0.041423 -0.440893 -0.315960  0.323637\n",
       "2001Q1 -0.041423 -0.440893 -0.315960  0.323637\n",
       "2001Q2 -0.041423 -0.440893 -0.315960  0.323637\n",
       "2001Q3 -0.041423 -0.440893 -0.315960  0.323637\n",
       "2001Q4 -0.226443  0.534980 -0.138711 -0.136036"
      ]
     },
     "execution_count": 284,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "annual_frame.resample('Q-DEC', convention='end').ffill()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于时间段是指时间跨度，因此有关上采样和下采样的规则更加严格：\n",
    "\n",
    "- 在下采样中，目标频率必须是源频率的一个子周期。\n",
    "- 在上采样中，目标频率必须超过源频率。\n",
    "\n",
    "如果不满足这些规则，将引发异常。这主要影响季度，年度和每周频率； 例如，Q-MAR定义的时间范围仅与A-MAR，A-JUN，A-SEP和A-DEC对齐："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 286,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000Q4</th>\n",
       "      <td>-0.041423</td>\n",
       "      <td>-0.440893</td>\n",
       "      <td>-0.315960</td>\n",
       "      <td>0.323637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q1</th>\n",
       "      <td>-0.041423</td>\n",
       "      <td>-0.440893</td>\n",
       "      <td>-0.315960</td>\n",
       "      <td>0.323637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q2</th>\n",
       "      <td>-0.041423</td>\n",
       "      <td>-0.440893</td>\n",
       "      <td>-0.315960</td>\n",
       "      <td>0.323637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q3</th>\n",
       "      <td>-0.041423</td>\n",
       "      <td>-0.440893</td>\n",
       "      <td>-0.315960</td>\n",
       "      <td>0.323637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q4</th>\n",
       "      <td>-0.226443</td>\n",
       "      <td>0.534980</td>\n",
       "      <td>-0.138711</td>\n",
       "      <td>-0.136036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2002Q1</th>\n",
       "      <td>-0.226443</td>\n",
       "      <td>0.534980</td>\n",
       "      <td>-0.138711</td>\n",
       "      <td>-0.136036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2002Q2</th>\n",
       "      <td>-0.226443</td>\n",
       "      <td>0.534980</td>\n",
       "      <td>-0.138711</td>\n",
       "      <td>-0.136036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2002Q3</th>\n",
       "      <td>-0.226443</td>\n",
       "      <td>0.534980</td>\n",
       "      <td>-0.138711</td>\n",
       "      <td>-0.136036</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Colorado     Texas  New York      Ohio\n",
       "2000Q4 -0.041423 -0.440893 -0.315960  0.323637\n",
       "2001Q1 -0.041423 -0.440893 -0.315960  0.323637\n",
       "2001Q2 -0.041423 -0.440893 -0.315960  0.323637\n",
       "2001Q3 -0.041423 -0.440893 -0.315960  0.323637\n",
       "2001Q4 -0.226443  0.534980 -0.138711 -0.136036\n",
       "2002Q1 -0.226443  0.534980 -0.138711 -0.136036\n",
       "2002Q2 -0.226443  0.534980 -0.138711 -0.136036\n",
       "2002Q3 -0.226443  0.534980 -0.138711 -0.136036"
      ]
     },
     "execution_count": 286,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "annual_frame.resample('Q-MAR').ffill()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 11.7 移动窗口功能\n",
    "\n",
    "用于时间序列运算的一类重要的数组转换是统计信息和在滑动窗口上或权重呈指数衰减的其他函数。这对于平滑嘈杂或不完整的数据很有用。我称它们为移动窗口函数，即使它包含没有固定长度窗口的函数（如指数加权移动平均值）。像其他统计功能一样，这些功能也会自动排除丢失的数据。\n",
    "\n",
    "在深入研究之前，我们可以加载一些时间序列数据并将其重新采样为工作日频率："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 287,
   "metadata": {},
   "outputs": [],
   "source": [
    "close_px_all = pd.read_csv('examples/stock_px_2.csv', parse_dates=True, index_col=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 288,
   "metadata": {},
   "outputs": [],
   "source": [
    "close_px = close_px_all[['AAPL', 'MSFT', 'XOM']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 289,
   "metadata": {},
   "outputs": [],
   "source": [
    "close_px = close_px.resample('B').ffill()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我现在介绍滚动运算符，它的行为类似于重采样和分组。可以在Series或DataFrame以及窗口上调用它（表示为多个周期；有关创建的图，请参见图11-4）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 297,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 310,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7fd9195b8850>"
      ]
     },
     "execution_count": 310,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "close_px.AAPL.plot(figsize=(10,6))\n",
    "close_px.AAPL.rolling(250).mean().plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "表达式rolling（250）在行为上与groupby类似，但是它不是分组而是创建了一个对象，该对象可以在250天的滑动窗口内进行分组。因此，这里有苹果股价的250天移动窗口均值。\n",
    "\n",
    "默认情况下，滚动功能要求窗口中的所有值均为非NA。可以更改此行为以解决数据丢失的问题，尤其是考虑到在时间序列开始时数据窗口期少于窗口期这一事实（请参见图11-5）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 311,
   "metadata": {},
   "outputs": [],
   "source": [
    "appl_std250 = close_px.AAPL.rolling(250, min_periods=10).std()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 314,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2003-01-09         NaN\n",
       "2003-01-10         NaN\n",
       "2003-01-13         NaN\n",
       "2003-01-14         NaN\n",
       "2003-01-15    0.077496\n",
       "2003-01-16    0.074760\n",
       "2003-01-17    0.112368\n",
       "Freq: B, Name: AAPL, dtype: float64"
      ]
     },
     "execution_count": 314,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "appl_std250[5:12]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 315,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7fd919adbf90>"
      ]
     },
     "execution_count": 315,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "appl_std250.plot(figsize=(10,6))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "为了计算扩展窗口均值，请使用扩展运算符而不是滚动。扩展均值从时间序列的开始处开始时间窗口，并增加窗口的大小，直到涵盖整个序列。apple_std250时间序列的均值窗口扩大如下："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 316,
   "metadata": {},
   "outputs": [],
   "source": [
    "expanding_mean = appl_std250.expanding().mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 317,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2003-01-02          NaN\n",
       "2003-01-03          NaN\n",
       "2003-01-06          NaN\n",
       "2003-01-07          NaN\n",
       "2003-01-08          NaN\n",
       "                ...    \n",
       "2011-10-10    18.521201\n",
       "2011-10-11    18.524272\n",
       "2011-10-12    18.527385\n",
       "2011-10-13    18.530554\n",
       "2011-10-14    18.533823\n",
       "Freq: B, Name: AAPL, Length: 2292, dtype: float64"
      ]
     },
     "execution_count": 317,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expanding_mean"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 321,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7fd91a6f3d10>"
      ]
     },
     "execution_count": 321,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "close_px.rolling(60).mean().plot(figsize=(10,6), logy=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "滚动功能还接受一个字符串，该字符串指示固定大小的时间偏移，而不是设定的周期数。 对于不规则的时间序列，使用此表示法可能很有用。 这些是您可以传递以重新采样的相同字符串。例如，我们可以像这样计算20天的滚动平均值："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 322,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>AAPL</th>\n",
       "      <th>MSFT</th>\n",
       "      <th>XOM</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2003-01-02</th>\n",
       "      <td>7.400000</td>\n",
       "      <td>21.110000</td>\n",
       "      <td>29.220000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-03</th>\n",
       "      <td>7.425000</td>\n",
       "      <td>21.125000</td>\n",
       "      <td>29.230000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-06</th>\n",
       "      <td>7.433333</td>\n",
       "      <td>21.256667</td>\n",
       "      <td>29.473333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-07</th>\n",
       "      <td>7.432500</td>\n",
       "      <td>21.425000</td>\n",
       "      <td>29.342500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-08</th>\n",
       "      <td>7.402000</td>\n",
       "      <td>21.402000</td>\n",
       "      <td>29.240000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-10</th>\n",
       "      <td>389.351429</td>\n",
       "      <td>25.602143</td>\n",
       "      <td>72.527857</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-11</th>\n",
       "      <td>388.505000</td>\n",
       "      <td>25.674286</td>\n",
       "      <td>72.835000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-12</th>\n",
       "      <td>388.531429</td>\n",
       "      <td>25.810000</td>\n",
       "      <td>73.400714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-13</th>\n",
       "      <td>388.826429</td>\n",
       "      <td>25.961429</td>\n",
       "      <td>73.905000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-14</th>\n",
       "      <td>391.038000</td>\n",
       "      <td>26.048667</td>\n",
       "      <td>74.185333</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2292 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  AAPL       MSFT        XOM\n",
       "2003-01-02    7.400000  21.110000  29.220000\n",
       "2003-01-03    7.425000  21.125000  29.230000\n",
       "2003-01-06    7.433333  21.256667  29.473333\n",
       "2003-01-07    7.432500  21.425000  29.342500\n",
       "2003-01-08    7.402000  21.402000  29.240000\n",
       "...                ...        ...        ...\n",
       "2011-10-10  389.351429  25.602143  72.527857\n",
       "2011-10-11  388.505000  25.674286  72.835000\n",
       "2011-10-12  388.531429  25.810000  73.400714\n",
       "2011-10-13  388.826429  25.961429  73.905000\n",
       "2011-10-14  391.038000  26.048667  74.185333\n",
       "\n",
       "[2292 rows x 3 columns]"
      ]
     },
     "execution_count": 322,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "close_px.rolling('20D').mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 指数加权函数\n",
    "\n",
    "将静态窗口大小与相等加权的观测值结合使用的另一种方法是，指定一个恒定的衰减因子，以赋予更多的权重给最近的观测值。有两种方法可以指定衰减因子。 一种流行的方法是使用跨度，这使得结果与窗口大小等于跨度的简单移动窗口功能相当。\n",
    "\n",
    "由于指数加权的统计量在最近的观察结果上占有更大的比重，因此与等权重的统计量相比，它“适应”速度更快。\n",
    "\n",
    "pandas具有ewm运算符以配合滚动和扩展。 这是一个示例，将Apple股票价格的60天移动平均线与span = 60的EW移动平均线进行了比较（见图11-7）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 325,
   "metadata": {},
   "outputs": [],
   "source": [
    "aapl_px = close_px.AAPL['2006':'2007']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 326,
   "metadata": {},
   "outputs": [],
   "source": [
    "ma60 = aapl_px.rolling(30, min_periods=20).mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 327,
   "metadata": {},
   "outputs": [],
   "source": [
    "ewma60 = aapl_px.ewm(span=30).mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 331,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7fd91be77b10>"
      ]
     },
     "execution_count": 331,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlYAAAFxCAYAAACx5OYMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeZiP1f/H8eeZxdgzzFDM2LKHyNi3SWRfBlmTLKmIvm0klVS++UZpJZKEzIyyy76EEGZsWZJ1GDN2wzBmP78/wo8ajNk+M7we1zWXmXOfz32/7rlceXfOuc9trLWIiIiISOo5OTqAiIiIyL1ChZWIiIhIGlFhJSIiIpJGVFiJiIiIpBEVViIiIiJpRIWViIiISBpxcXQAAA8PD1u8eHFHxxARERG5o+Dg4DPWWs+kjmWKwqp48eIEBQU5OoaIiIjIHRljQm51TFOBIiIiImlEhZWIiIhIGlFhJSIiIpJGMsUaq6TExcURGhpKdHS0o6Pck7Jnz46Xlxeurq6OjiIiInLPyLSFVWhoKHny5KF48eIYYxwd555ireXs2bOEhoZSokQJR8cRERG5Z2TaqcDo6GgKFCigoiodGGMoUKCARgNFRETSWKYtrAAVVelIv1sREZG0l6kLK0cbOXIkjzzyCJUrV6ZKlSps2rQJgL59+7Jnz540uUbu3Lnvqn/x4sWpX7/+TW1VqlShYsWKN7W9/PLLFClShMTExFRnFBERkeTJtGusHG3jxo0sXLiQrVu34ubmxpkzZ4iNjQVg0qRJDs0WGRnJsWPH8Pb2Zu/evf86npiYyJw5c/D29mbt2rX4+vpmfEgREZH7kEasbiE8PBwPDw/c3NwA8PDwoHDhwgD4+vpe3yk+d+7cDBkyhGrVqtG4cWM2b96Mr68vJUuWZP78+QBMmTKFtm3b0qxZM8qWLcuIESOSvObo0aOpXr06lStXZvjw4bfM1qlTJwIDAwHw9/ena9euNx1fvXo1FStW5MUXX8Tf3z91vwgRERFJNhVWt/Dkk09y7NgxypQpQ//+/VmzZk2S/S5fvoyvry/BwcHkyZOHt99+m+XLlzNnzhzefffd6/02b97Mjz/+yPbt2/npp5/+9QqfZcuWsX//fjZv3sz27dsJDg5m7dq1SV6zY8eOzJ49G4AFCxbQunXrm45fK7b8/PxYuHAhcXFxqflViIiISDJlmanApKazOnXqRP/+/YmKiqJFixb/Ov7ss8/y7LPPcubMGTp27HjTsV9//fW218udOzfBwcGsW7eO1atX07lzZ0aNGsWzzz57U79s2bLRrFkzACpVqoSbmxuurq5UqlSJI0eOXO/XpEkTChQoAED79u357bff8PHxuX582bJlLFu2jKpVqwJw6dIl9u/fT4MGDf6VLX/+/Li7uxMQEED58uXJmTPn9WOxsbEsWrSIsWPHkidPHmrWrMmyZcto2bLlbe9XRERE7iwhMeG2x7NMYeUIzs7O+Pr64uvrS6VKlfjhhx/+VVi5urpef8LOycnp+tShk5MT8fHx1/v98ym8f/5srWXo0KE8//zzycrWuXNnBgwYwJQpU25qX7JkCRcuXKBSpUoAREVFkTNnThVWIiIiaeCTjZ/c9niWKaxuN8KUM2fO2x738PC44wjVP+3btw8nJydKly4NwPbt2ylWrNhdneNGy5cv59y5c+TIkYO5c+cyefLkm443bdqUd955h+7du5M7d26OHz+Oq6srBQsWTPJ8fn5+hIeH07RpU8LCwq63+/v7M2nSpOvrri5fvkyJEiWuF1giIiKSMntO7+Gd1e/ctk+WKawy2qVLlxg4cCARERG4uLhQqlQpJk6cmOLz1atXjx49enDgwAG6det20zQg/L2ma+/evdSuXRv4eypy+vTptyys8uTJw5AhQ25qi4qKYunSpUyYMOF6W65cuahXrx4LFiygc+fOKc4vIiJyP7PWMmDRAPJky8NZzt6yn7HWZmCspPn4+Nh/Lubeu3cv5cuXd1CitDVlyhSCgoL46quvHB3lJvfS71hERCQ9Ldq/iJYzWvJV8694qeZLwdZan6T66alAERERkdtItIkMXTmUh90fpmGehrftq6nADHDt6UQRERHJevz/8GfnyZ386PcjHdp1uG1fjViJiIiI3EJsQizvrH6Hqg9WxT3Mnb/++uu2/VVYiYiIiNzCxOCJHI44zEdPfMS4r8fd8qGya1RYiYiIiCQhOj6aketG0rBYQxoUacChQ4fo16/fbT+jNVYiIiIiSZi2YxonLp1gut90cuTIwa5du4iJieHDDz+85Wc0YnUbzs7OVKlS5frXqFGjmDdvHu3atbve56OPPqJUqVLXf16wYAFt2rT517l8fX0pWrQoN25v0a5dO3Lnzn1T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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,6))\n",
    "ma60.plot(style='k--', label='Simple MA')\n",
    "ewma60.plot(style='g-', label='EW MA')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 二进制移动窗口功能\n",
    "\n",
    "一些统计运算符，例如相关性和协方差，需要对两个时间序列进行运算。例如，金融分析师通常对股票与标普500等基准指数的相关性感兴趣。要查看这一点，我们首先计算所有时间序列的百分比变化："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 332,
   "metadata": {},
   "outputs": [],
   "source": [
    "spx_px = close_px_all['SPX']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 333,
   "metadata": {},
   "outputs": [],
   "source": [
    "spx_rets = spx_px.pct_change()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 334,
   "metadata": {},
   "outputs": [],
   "source": [
    "returns = close_px.pct_change()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "然后，我们将滚动称为corr聚合函数，然后可以使用spx_rets计算滚动相关性（有关结果图，请参见图11-8）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 335,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7fd91bf63d10>"
      ]
     },
     "execution_count": 335,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "corr = returns.AAPL.rolling(125, min_periods=100).corr(spx_rets)\n",
    "corr.plot(figsize=(10,6))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "假设您想一次计算标准普尔500指数与许多股票的相关性。编写循环并创建一个新的DataFrame很容易，但可能会重复，因此，如果传递Series和DataFrame，则诸如rolling_corr之类的函数将计算Series与DataFrame中每一列的相关性（在这种情况下为spx_rets）（结果图见图11-9）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 336,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7fd91c114790>"
      ]
     },
     "execution_count": 336,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "corr = returns.rolling(125, min_periods=100).corr(spx_rets)\n",
    "corr.plot(figsize=(10,6))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 用户定义的移动窗口功能\n",
    "\n",
    "滚动的apply方法和相关方法提供了一种在移动窗口上应用自己设计的数组函数的方法。唯一的要求是该函数从数组的每一部分产生一个单一值（一个减少量）。例如，虽然我们可以使用rolling（...）。quantile（q）计算样本分位数，但我们可能会对样本中特定值的百分等级感兴趣。 scipy.stats.percentileofscore函数就是这样做的（结果图见图11-10）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 337,
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy.stats import percentileofscore"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 338,
   "metadata": {},
   "outputs": [],
   "source": [
    "score_at_2percent = lambda x: percentileofscore(x, 0.02)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 339,
   "metadata": {},
   "outputs": [],
   "source": [
    "result = returns.AAPL.rolling(250).apply(score_at_2percentpercent)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 340,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7fd91cec7210>"
      ]
     },
     "execution_count": 340,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "result.plot(figsize=(10,6))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果尚未安装SciPy，则可以使用conda或pip进行安装。\n",
    "\n",
    "## 11.8 结论\n",
    "\n",
    "时间序列数据要求的分析和数据转换工具类型不同于我们在前几章中探讨的其他类型的数据。\n",
    "\n",
    "在接下来的章节中，我们将继续介绍一些高级的熊猫方法，并展示如何开始使用诸如statsmodels和scikit-learn之类的建模库。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
